0 REM - WON'T WORK WITH BUSCARD 'ON' 1 GOTO 1000 10 REM :::::: ZAP! 11 A=256: B=2049: C=1003 12 IF PEEK(B+2) +A*PEEK(B+3)>=C THEN 15 13 B=PEEK(B)+A*PEEK(B+1): ON ABS(B<>0) GOTO 12:END 14 A=256:B=PEEK(251)+A*PEEK(252) 15 IF PEEK(B+1)=0 THEN END 16 PRINT CHR$(147)PEEK (B+2)+A*PEEK(B+3):PRINT "GOTO 14" 17 POKE 251,B-INT(B/A)*A:POKE 252,B/A 18 POKE 631,19:POKE632,13:POKE633,13:POKE198,3:END 20 REM ... GRAPHICS 21 POKE 53265,59 22 POKE 53272,29 23 POKE 56576,198 24 RETURN 30 REM ... TEXT 31 POKE 53265,27 32 POKE 53272,21 33 POKE 56576,199 34 RETURN 40 REM :::: COLOURS 41 FOR I=17408 TO 18407 42 POKE I,C 43 NEXT 44 RETURN 50 REM ::::::: PAINT BACKGROUND 51 FOR I = 24576 TO 32575 52 POKE I,0 53 NEXT I 54 RETURN 60 REM ::::::: FIND A POINT 61 ROW = INT(Y/8) 62 COL = INT(X/8) 63 LINE = Y AND 7 64 BIT = 7-(XAND7) 65 BYTE = 24576 + ROW*320 + COL*8 + LINE 66 CBYTE = 17408 + ROW * 40 + COL 67 RETURN 70 REM ::::::: PLOT A POINT 71 GOSUB 60 72 POKE BYTE,PEEK(BYTE) OR 2^BIT 73 POKE CBYTE,C 74 RETURN 80 REM ::::: PLOT A LINE 81 DX = X2 - X1: DY = Y2 - Y1 82 L=ABS(DX):IF ABS(DY)>L THEN L=ABS(DY) 83 IF L>0 THEN XI = DX/L: YI = DY/L 84 X = X1+.5:Y = Y1+.5 85 FOR I = 0 TO L 86 GOSUB 70: REM PLOT POINT 87 X=X+XI:Y=Y+YI 88 NEXT I 89 RETURN 90 REM ::::: PAINT A SHAPE 91 PC=PC+ABS(PC=0):FOR X=X0 TO X0+W:FL$="F":PR=0 92 FOR YC=Y0TOY0+H:Y=YC:GOSUB60 93 ON ABS((PEEK(BYTE)AND 2^BIT)<>0) GOTO 97:IF PR=0 THEN 96 94 PR=0:IF FL$="F"THEN Y1=YC:FL$="T":GOTO 96 95 GOSUB 99:FL$="F" 96 NEXT YC:GOTO 98 97 PR=1:NEXT YC:IF FL$="T"THEN GOSUB 99 98 NEXT X:RETURN 99 FOR Y=Y1TOYC-1:ON ABS(RND(1)0) 225 VV=PEEK(WW)AND(255-2^SP)OR(2^SP*Z%) 226 IF PR<>Z%THEN GOSUB140 227 POKE W,V:POKEWW,VV: GOSUB 130 228 POKE 53249+SP*2,YY 229 RETURN 230 REM :: MOVE SPRITE FROM X1,Y1 TO X2,Y2 231 DX=X2-X1:DY=Y2-Y1 232 L=ABS(DX):IFABS(DY)>LTHENL=ABS(DY) 233 IF L>0 THEN XI=DX/L:YI=DY/L 234 X=X1+.5:Y=Y1+.5:SD=SD+ABS(SD=0) 235 FOR I=0TOLSTEPSD 236 GOSUB 220 237 X=X+XI*SD:Y=Y+YI*SD 238 NEXT I 239 RETURN 1000 REM ::::: 1001 REM MAIN ROUTINE 1002 REM ::::: 1010 GOSUB 20 1100 REM ::::: SUN SPRITE 1110 SP =0:GOSUB 120 1120 GOSUB 130 1130 GOSUB 150 1140 GOSUB 170 1150 GOSUB 200 1160 C = 7:GOSUB 210 1170 X1=0:Y1=10:X2=319:Y2=10:SD=5 1180 GOSUB 230: GOTO 1180 2500 REM ::::: SUN SPRITE DATA 2510 DATA 0, 0, 0 2520 DATA 0, 0, 0 2530 DATA 1,255,128 2540 DATA 7,255,224 2550 DATA 15,255,240 2560 DATA 31,255,248 2570 DATA 63,255,252 2580 DATA 127,255,254 2590 DATA 255,255,255 2600 DATA 255,255,255 2610 DATA 255,255,255 2620 DATA 255,255,255 2630 DATA 255,255,255 2640 DATA 127,255,254 2650 DATA 63,255,252 2660 DATA 31,255,248 2670 DATA 15,255,240 2680 DATA 7,255,224 2690 DATA 1,255,128 3000 DATA 0, 0, 0 3010 DATA 0, 0, 0 6000 GETA$ 6010 IF A$=" " THEN 6030 6020 GOTO 6000 6030 GOSUB 30 6040 END